package top.yxqz.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author: 余小小
 * @date: 2023/3/7
 * @description： sqlsession工具类
 */
public class SQLSessionUtils {
    /**
     * 得到一个sql会话对象
     *
     * @return
     * @throws IOException
     */
    public static SqlSession getSqlSession() {
        //        1，得到资源流对象，得到resources直接目录下的文件(导包要导入ibatis的）
        InputStream resourceAsStream = null;
        SqlSession sqlSession = null;
        try {
            resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            //        2.创建一个sqlsessionfactoryBuilder（构造器） 我们自己创建的，因为现在只有我们在代理 (导包要导入ibatis的）
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//        3.通过构造器来创建一个sqlsessionfactory工厂对象,传入的参数是资源流对象（核心配置文件） (导包要导入ibatis的）
            SqlSessionFactory sqlSessionFactory = builder.build(resourceAsStream);
//        4.得到sqlsession会话 (导包要导入ibatis的） 开启自动提交事务
//        openSession里面的参数是true的时候， 开启了自动提交事务。默认是false
            sqlSession = sqlSessionFactory.openSession(true);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }

//        sqlSession.commit();  手动提交事务
        return sqlSession;
    }
}
